import useConfigStore from '@/store/config'
import useCartStore from '@/store/cart'
import ls from '@/lib/ls'

export default {
    // 更新购物车的商品
    async RefreshCart(item, source='') {
        console.log(item);
        // 筛选是否相同商品
        const existingItem = this.cartList.find((cartItem) => cartItem.itemCode === item.itemCode && cartItem.flavor === item.flavor);
        // 相同
        if (existingItem) {
            if (item.mathType === 'plus') {
                if (item.type == 2 && source=='') {
                    // 套餐
                    existingItem.num += item.num
                } else {
                    if(item.addType == 'size' ){ // 规格添加
                        if(source == 'cart' ){  // 购物车规格添加
                            existingItem.num += Number(item.saleLimitStep);
                            if(existingItem.num >= Number(item.saleLimitMax)){
                                existingItem.num = Number(item.saleLimitMax)
                            }
                        }else{ // 点单页规格添加
                            existingItem.num += Number(item.num);
                        }
                    }else{
                        existingItem.num += Number(item.saleLimitStep);
                        if(existingItem.num >= Number(item.saleLimitMax)){
                            existingItem.num = Number(item.saleLimitMax)
                        }
                    }
                    
                    
                }
            } else if (item.mathType === 'minus') {
                existingItem.num -= Number(item.saleLimitStep);
                await nextTick()
                if (existingItem.num <= 0 || existingItem.num <  Number(item.saleLimitMin)) {
                    console.log(existingItem.num , Number(item.saleLimitMin));
                    
                    const index = this.cartList.indexOf(existingItem);
                    this.cartList.splice(index, 1);
                }
            }
        } else {
            // 点单步长
            if(item.num <= Number(item.saleLimitStep)){
                item.num = Number(item.saleLimitStep)
            }
            // 最小点单数量
            if(item.num <= Number(item.saleLimitMin)){
                item.num = Number(item.saleLimitMin)
            }
            this.cartList.push(item);
        }
        ls.set('CART_LIST', this.cartList)
    },
    // 更新商品列表
    UpdateNumFromProductList(item) {
        const configStore = useConfigStore()
        this.UpdateNumRecursive(configStore.productList, item.itemCode, item.num);
        this.UpdateNumRecursive(configStore.allProductList, item.itemCode, item.num);
    },
    // 更新商品列表的递归函数
    UpdateNumRecursive(list, itemCode, num) {
        for (const v of list) {
            if (v.priceList) {
                const matchedPrice = v.priceList.find((price) => price.itemCode === itemCode);
                if (matchedPrice) {
                    if(num < v.saleLimitMin){
                        v.num = 0
                    }else{
                        v.num = num;
                    }
                    
                    return;
                }
            }
            if (v.children) {
                this.UpdateNumRecursive(v.children, itemCode, num);
            }
        }
    },
    // 重置state
    ClearState() {
        this.$reset()
    },
    // 重置购物车
    ClearCart() {
        this.cartList.length = 0
        const configStore = useConfigStore()
        for (const product of configStore.productList) {
          for (const childItem of product.children) {
            childItem.showNum = 0;
            childItem.num = 0;
          }
        }
        ls.remove('CART_LIST')
    },
    // 存储房台信息
    GetTableCart() {
        this.tableInfo = ls.get('TABLE_INFO')
        const list = ls.get('CART_LIST')
        if (list) {
            this.cartList.length = 0
            this.cartList.push(...list)
        }
    },
    // 重置二维码支付参数
    ClearPayInfo(){
        // 支付信息
        this.payInfo = { ...this.payInfoTemp }
    },
}